import request from './index';

// 获取土地列表
export function getLands() {
  return request({
    url: '/api/land/my',
    method: 'get'
  });
}

// 添加土地
export function addLand(data) {
  console.log('API: 添加土地数据', data);
  
  return request({
    url: '/api/land',
    method: 'post',
    data
  });
}

// 更新土地信息
export function updateLand(id, data) {
  return request({
    url: `/land/${id}`,
    method: 'put',
    data
  });
}

// 删除土地
export function deleteLand(id) {
  return request({
    url: `/land/${id}`,
    method: 'delete'
  });
}

// 获取种植记录
export function getPlantings() {
  return request({
    url: '/api/crop-record/my',
    method: 'get'
  });
}

// 添加种植记录
export function addPlanting(data) {
  // 格式化日期
  if (data.plantingDate && data.plantingDate instanceof Date) {
    data.plantingDate = data.plantingDate.toISOString().split('T')[0];
  }
  
  if (data.harvestDate && data.harvestDate instanceof Date) {
    data.harvestDate = data.harvestDate.toISOString().split('T')[0];
  }
  
  // 确保已收获状态下有实际产量
  if (data.status === 1 && (!data.actualYield || data.actualYield <= 0)) {
    data.actualYield = data.expectedYield || 1;
  }
  
  return request({
    url: '/api/crop-record',
    method: 'post',
    data
  });
}

// 更新种植记录
export function updatePlanting(id, data) {
  // 格式化日期
  if (data.plantingDate && data.plantingDate instanceof Date) {
    data.plantingDate = data.plantingDate.toISOString().split('T')[0];
  }
  
  if (data.harvestDate && data.harvestDate instanceof Date) {
    data.harvestDate = data.harvestDate.toISOString().split('T')[0];
  }
  
  // 构建完整请求数据
  const requestData = {
    ...data,
    id
  };
  
  // 确保已收获状态下有实际产量
  if (requestData.status === 1 && (!requestData.actualYield || requestData.actualYield <= 0)) {
    requestData.actualYield = requestData.expectedYield || 1;
  }
  
  // 移除undefined字段
  Object.keys(requestData).forEach(key => {
    if (requestData[key] === undefined) {
      delete requestData[key];
    }
  });
  
  console.log('API调用 - 更新种植记录:', requestData);
  
  return request({
    url: '/api/crop-record',
    method: 'put',
    data: requestData
  });
}

// 删除种植记录
export function deletePlanting(id) {
  return request({
    url: `/api/crop-record/${id}`,
    method: 'delete'
  });
}

// 记录收获
export function recordHarvest(id, actualYield) {
  return request({
    url: `/api/crop-record/${id}/harvest`,
    method: 'put',
    data: {
      actualYield
    }
  });
}

// 获取施肥记录
export function getFertilizingRecords() {
  return request({
    url: '/api/fertilizing-record',
    method: 'get'
  });
}

// 添加施肥记录
export function addFertilizingRecord(data) {
  return request({
    url: '/api/fertilizing-record',
    method: 'post',
    data
  });
}

// 获取库存
export function getInventory() {
  return request({
    url: '/api/inventory/my',
    method: 'get'
  });
}

// 获取某类型库存
export function getInventoryByType(type) {
  return request({
    url: `/api/inventory/my/type/${type}`,
    method: 'get'
  });
}

// 获取低库存预警
export function getLowInventory() {
  return request({
    url: '/api/inventory/my/low',
    method: 'get'
  });
}

// 添加库存
export function addInventory(data) {
  return request({
    url: '/api/inventory',
    method: 'post',
    data
  });
}

// 更新库存
export function updateInventory(id, data) {
  console.log(`更新库存API调用，URL: /api/inventory/${id}，数据:`, data);
  // 复制数据对象，删除可能导致问题的属性
  const cleanedData = { ...data };
  
  // 确保只发送后端期望的字段
  return request({
    url: `/api/inventory/${id}`,
    method: 'put',
    data: cleanedData
  });
}

// 删除库存
export function deleteInventory(id) {
  return request({
    url: `/api/inventory/${id}`,
    method: 'delete'
  });
}

// 获取订单
export function getOrders() {
  return request({
    url: '/order/farmer',
    method: 'get'
  });
}

// 获取交易记录
export function getTransactions(params) {
  return request({
    url: '/api/transaction/my',
    method: 'get',
    params
  }).then(response => {
    console.log('获取交易记录成功:', response);
    return response;
  }).catch(error => {
    console.error('获取交易记录失败:', error);
    throw error;
  });
}

// 获取交易记录统计
export function getTransactionStats() {
  return request({
    url: '/api/transaction/stats',
    method: 'get'
  }).then(response => {
    console.log('获取交易统计成功:', response);
    return response;
  }).catch(error => {
    console.error('获取交易统计失败:', error);
    throw error;
  });
}

// 创建交易记录
export function createTransaction(data) {
  return request({
    url: '/api/transaction',
    method: 'post',
    data
  });
}

// 获取作物类型
export function getCropTypes() {
  return request({
    url: '/api/crop/types',
    method: 'get'
  });
}

// 获取肥料列表
export function getFertilizers() {
  return request({
    url: '/api/fertilizer/list',
    method: 'get'
  });
}

// 更新施肥记录
export function updateFertilizingRecord(id, data) {
  return request({
    url: `/api/fertilizing-record/${id}`,
    method: 'put',
    data
  });
}

// 删除施肥记录
export function deleteFertilizingRecord(id) {
  return request({
    url: `/api/fertilizing-record/${id}`,
    method: 'delete'
  });
}

// 获取我的产品列表
export function getMyProducts() {
  return request({
    url: '/api/product/my',
    method: 'get'
  });
}

// 获取我的销售订单
export function getMySellOrders() {
  return request({
    url: '/api/order/my/sell',
    method: 'get'
  });
}

/**
 * 获取我的购买订单
 */
export function getMyBuyOrders() {
  return request({
    url: '/api/order/my/buy',
    method: 'get'
  });
}

/**
 * 获取农户所有订单（包括购买肥料的订单和销售农产品的订单）
 */
export function getAllMyOrders() {
  return request({
    url: '/api/order/my/all',
    method: 'get'
  });
}

// 订单发货
export function shipOrder(id, data) {
  return request({
    url: `/api/order/${id}/ship`,
    method: 'put',
    data
  });
}

/**
 * 确认收货
 * @param {number} id 订单ID
 */
export function receiveOrder(id) {
  return request({
    url: `/api/order/${id}/receive`,
    method: 'put'
  });
}

// 添加产品
export function addProduct(data) {
  return request({
    url: '/api/product',
    method: 'post',
    data
  });
}

// 更新产品
export function updateProduct(data) {
  return request({
    url: '/api/product',
    method: 'put',
    data
  });
}

// 删除产品
export function deleteProduct(id) {
  return request({
    url: `/api/product/${id}`,
    method: 'delete'
  });
}

// 上传产品图片
export function uploadProductImage(file) {
  const formData = new FormData();
  formData.append('file', file);
  
  // 添加调试信息
  console.log('上传文件FormData:', [...formData.entries()]);
  console.log('上传文件类型:', file.type);
  console.log('上传文件大小:', file.size);
  
  // 获取token
  const token = localStorage.getItem('token');
  console.log('上传图片使用的token:', token ? '已获取' : '未获取');
  
  // 使用URL参数传递token，避免header丢失问题
  return request({
    url: '/api/product/upload/image' + (token ? `?token=${encodeURIComponent(token)}` : ''),
    method: 'post',
    data: formData,
    headers: {
      'Content-Type': 'multipart/form-data',
      'Authorization': token ? `Bearer ${token}` : ''
    },
    timeout: 30000  // 增加超时时间到30秒
  });
}

// 上架产品
export function publishProduct(id) {
  return request({
    url: `/api/product/publish/${id}`,
    method: 'put'
  });
}

// 下架产品
export function unpublishProduct(id) {
  return request({
    url: `/api/product/unpublish/${id}`,
    method: 'put'
  });
}

// 创建订单
export function createOrder(data) {
  return request({
    url: '/api/order',
    method: 'post',
    data
  });
}

/**
 * 支付订单
 * 
 * @param {number} id 订单ID
 * @returns {Promise<Object>} 支付结果
 */
export function payOrder(id) {
  if (!id) {
    console.error('支付订单错误: 订单ID为空');
    return Promise.reject(new Error('订单ID不能为空'));
  }
  
  console.log('调用支付订单API, 订单ID:', id);
  return request({
    url: `/api/order/${id}/pay`,
    method: 'put'
  }).then(response => {
    console.log('支付订单成功:', response);
    return response;
  }).catch(error => {
    console.error('支付订单失败:', error);
    throw error;
  });
} 